---
title: PortalNodeRenderer 传送门渲染器
icon: DoorOpen
relatedFile: app/src/core/render/canvas2d/entityRenderer/portalNode/portalNodeRenderer.tsx
---

<Callout type="warn">Deprecated: 传送门已弃用</Callout>

这个服务用于渲染 PortalNode（传送门）在画布上的视觉表现。它负责绘制节点的各个组成部分，包括其主体、文本信息、交互状态以及调试信息，确保节点在不同状态下都能正确且美观地显示。

## API

### `render(portalNode: PortalNode)`

主渲染方法，用于绘制 PortalNode 的完整视觉元素。

- 绘制节点主体矩形：基于 `portalNode` 的位置、大小、颜色、边框样式和圆角半径。
- 绘制标题区域的虚线：位于标题下方，用于视觉分隔。
- 绘制标题文字：显示 `portalNode` 的标题，字体大小和颜色与节点样式保持一致。
- 绘制文件路径区域的虚线：位于文件路径下方，用于视觉分隔。
- 绘制文件路径文字：显示 `portalNode` 的 `portalFilePath`。
- 处理选中状态：如果 `portalNode` 被选中，会在其外部绘制一个额外的选中框。
- 绘制实体详情：调用 `entityRenderer` 来渲染 `portalNode` 的详细信息。
- 绘制调试信息：如果渲染器处于调试模式，会显示 `portalNode` 的标题、文件路径和目标位置等调试文本。
- 调用 `renderHoverState` 方法：处理鼠标悬停时的渲染逻辑。

### `renderHoverState(portalNode: PortalNode)`

处理鼠标悬停在 PortalNode 不同区域时的视觉反馈。

- 检测鼠标位置：判断鼠标是否在 `portalNode` 的碰撞箱内。
- 标题区域悬停：如果鼠标在标题区域，会绘制一个预选中状态的矩形，并显示“双击编辑标题”的提示文字。
- 路径区域悬停：如果鼠标在路径区域，会绘制一个预选中状态的矩形，并显示“双击编辑相对路径”的提示文字。
- 节点主体区域悬停：如果鼠标在节点主体区域（非标题或路径区域），会显示“双击传送”的提示文字。

### `renderBackground(portalNode: PortalNode)`

用于绘制 PortalNode 的背景。

- 绘制背景矩形：基于 `portalNode` 的矩形区域，使用背景颜色、透明边框和圆角半径进行绘制。
